![]() |
![]() |
|
Bei dem Schriftstil kann es sich nur um eine Änderung der Darstellung handeln, die in der Enumeration FontStyle beschrieben wird.
Soll eine Schrift beispielsweise fett und kursiv sein, müssen die entsprechenden Konstanten mit dem bitweisen Or-Operator verknüpft werden. Die folgende Anweisung bewirkt eine Änderung der Eigenschaft Font der Form in der Weise, dass die Schrift fett und kursiv angezeigt wird:
22.4.4 Die grafische Ausgabe einer Zeichenfolge
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Public Sub DrawString (String, Font, Brush, PointF) |
| Public Sub DrawString (String, Font, Brush, PointF, StringFormat) |
| Public Sub DrawString (String, Font, Brush, Single, Single) |
| Public Sub DrawString (String, Font, Brush, Single, Single, StringFormat) |
Die ersten drei Parameter sind in allen Methoden gleich: Es wird zuerst die zu zeichnende Zeichenfolge angegeben, anschließend die Schriftart und dann noch ein Objekt vom Typ Brush, um dem grafischen Layout einen großen Spielraum zu eröffnen. Die Parameter vom Typ Single bzw. PointF steuern die Ausgabe der Zeichenfolge an einer vorherbestimmten Position. Dabei geben die koordinatenbeschreibenden Argumente die horizontale und die vertikale Koordinate der oberen linken Ecke für die anzuzeigende Zeichenfolge an.
| Hinweis |
|
Die beiden Strukturen Point und PointF unterscheiden sich dahingehend, dass Point die Punktkoordinaten als Integer beschreibt und PointF als Single. |
Ihnen unbekannt ist lediglich noch der Typ StringFormat, der Informationen über das Schriftlayout enthält und diverse Spezialeffekte ermöglicht. In Abschnitt 22.4.7 werden Sie mehr darüber erfahren.
Im folgenden Beispiel wird eine Zeichenfolge in die linke obere Ecke des ersten Quadranten des Clientbereichs der Form mit der DrawString-Methode gezeichnet und dieselbe Zeichenfolge auch noch in die linke obere Ecke des vierten Quadranten. Zur sichtbaren Aufteilung des Fensters in die Quadranten sorgen eine vertikale und eine horizontale Linie.

Hier klicken, um das Bild zu Vergrößern
Abbildung 22.26 Ausgabe einer Zeichenfolge mit »DrawString«
| ' ---------------------------------------------------------- |
| ' Beispiel: ...\Kapitel 22\DrawStringDemo1 |
| ' ---------------------------------------------------------- |
| Public Class Form1 |
| Private Sub Form1_Paint(...) Handles MyBase.Paint |
| Dim str As String = " Hallo Welt" |
| Dim f As Font = New Font("Arial", 20) |
| Dim gr As Graphics = e.Graphics |
| gr.DrawString(str, f, Brushes.Black, 0, 0) |
| gr.DrawLine(New Pen(Brushes.Blue), 0, _ |
| Me.ClientSize.Height \ 2, Me.ClientSize.Width, _ |
| Me.ClientSize.Height \ 2) |
| gr.DrawLine(New Pen(Brushes.Blue), _ |
| Me.ClientSize.Width \ 2, 0, _ |
| Me.ClientSize.Width \ 2, Me.ClientSize.Height) |
| gr.DrawString(str, f, Brushes.Black, _ |
| Me.ClientSize.Width / 2, _ |
| Me.ClientSize.Height / 2) |
| End Sub |
| End Class |
Die Festlegung des Startpunkts einer Zeichenfolge ist eine Sache, eine andere ist, die Abmessungen einer Zeichenfolge im Voraus zu wissen. Wie wollen Sie beispielsweise ansonsten die Zeichenfolge »Hallo Welt« mittig im Clientbereich einer grafikfähigen Komponente zeichnen lassen? Sie müssen wissen, wie viel Platz die Zeichenfolge sowohl horizontal als auch vertikal für sich beansprucht.
Hier hilft uns die Methode MeasureString der Klasse Graphics. Diese Methode ist wieder vielfach überladen, liefert aber in allen Fällen die Referenz auf ein SizeF-Objekt zurück. Sehen wir uns nur die einfachste und vermutlich auch am häufigsten benutzte Variante an, die als Argumente die Zeichenfolge selbst sowie die gewünschte Schriftart benötigt.
| Public Function MeasureString(String, Font) As SizeF |
Die Struktur SizeF stellt einen rechteckigen Bereich zur Verfügung, dessen Abmessungen durch die Eigenschaften Height und Width beschrieben werden, welche die Abmessungen als Single zurückliefern.
Mit MeasureString können wir die Abmessungen einer Zeichenfolge erfahren. Damit sind wir aber noch nicht in der Lage, diese zentriert in einem Clientbereich zu positionieren, denn der Startpunkt des zeichenfolgenumschließenden Rechtecks liegt links oben und würde immer noch dazu führen, dass wir eine verhältnismäßig aufwändige Berechnung anstellen müssten, um die Zeichenfolge zentriert anzuzeigen. Es gibt eine bessere Lösung, die über die Klasse StringFormat führt.
Ein Objekt vom Typ StringFormat enthält Informationen für das Textlayout, beispielsweise die Textausrichtung und der Zeilenabstand.
Mit den beiden Eigenschaften Alignment und LineAlignment kann eine Zeichenfolge positioniert werden:
| Public Property Alignment As StringAlignment |
| Public Property LineAlignment As StringAlignment |
Alignment beschreibt die horizontale Ausrichtung eines Textes, LineAlignment die vertikale. Beide sind vom Typ StringAlignment, einer Enumeration, die drei Konstanten definiert.
| StringAlignment-Member | Beschreibung |
| Near | Die Ausrichtung orientiert sich an der linken oberen Ecke. |
| Center | Die Ausrichtung ist zentriert in der Mitte. |
| Far | Die Ausrichtung orientiert sich an der rechten unteren Ecke. |
Damit wird die Lösung zur zentrierten Ausgabe einer Zeichenfolge sehr einfach: Wir erzeugen nur ein StringFormat-Objekt und legen die beiden Eigenschaften Alignment und LineAlignment auf StringAlignment.Center fest. Anschließend übergeben wir das StringFormat-Objekt der DrawString-Methode.
| ' ---------------------------------------------------------- |
| ' Beispiel: ...\Kapitel 22\DrawStringDemo2 |
| ' ---------------------------------------------------------- |
| Public Class Form1 |
| Private Sub Form1_Paint(...) Handles MyBase.Paint |
| Dim str As String = " Hallo Welt" |
| Dim f As Font = New Font("Arial", 20) |
| Dim gr As Graphics = e.Graphics |
| Dim strFormat As StringFormat = New StringFormat() |
| strFormat.Alignment = StringAlignment.Center |
| strFormat.LineAlignment = StringAlignment.Center |
| gr.DrawLine(New Pen(Brushes.Blue), 0, _ |
| Me.ClientSize.Height \ 2, _ |
| Me.ClientSize.Width, _ |
| Me.ClientSize.Height \ 2) |
| gr.DrawLine(New Pen(Brushes.Blue), Me.ClientSize.Width \ 2, _ |
| 0, Me.ClientSize.Width \ 2, _ |
| Me.ClientSize.Height) |
| gr.DrawString(str, f, Brushes.Black, _ |
| Me.ClientSize.Width / 2, _ |
| Me.ClientSize.Height / 2, strFormat) |
| End Sub |
| End Class |

Hier klicken, um das Bild zu Vergrößern
Abbildung 22.27 Ausgabe einer zentrierten Zeichenfolge
| << zurück |
|
||||||||||||||
|
||||||||||||||
|
||||||||||||||
|
||||||||||||||
Copyright © Galileo Press 2007
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken.
Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die
gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich
geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung,
Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.